package com.sdweizan.sdk.bytedance.bean.payment;

import com.alibaba.fastjson.annotation.JSONField;
import com.sdweizan.sdk.bytedance.bean.BdBaseRequest;
import com.sdweizan.sdk.bytedance.constants.BdConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BdCreateOrderRequest implements BdBaseRequest {

  @JSONField(name = "app_id")
  private String appId;

  // 开发者侧的订单号
  @JSONField(name = "out_order_no")
  private String outOrderNo;

  // 支付价格。 单位为[分]
  @JSONField(name = "total_amount")
  private Long totalAmount;

  // 商品描述
  @JSONField(name = "subject")
  private String subject;

  // 商品详情
  @JSONField(name = "body")
  private String body;

  // 订单过期时间(秒)
  @JSONField(name = "valid_time")
  private Long validTime;

  // 签名
  @JSONField(name = "sign")
  private String sign;

  // 开发者自定义字段，回调原样回传
  @JSONField(name = "cp_extra")
  private String cpExtra;

  // 商户自定义回调地址，必须以 https 开头
  @JSONField(name = "notify_url")
  private String notifyUrl;

  // 第三方平台服务商 id，非服务商模式留空
  @JSONField(name = "thirdparty_id")
  private String thirdpartyId;

  // 可用此字段指定本单使用的收款商户号（目前为灰度功能，需要联系平台运营添加白名单，
  // 白名单添加1小时后生效；未在白名单的小程序，该字段不生效）
  @JSONField(name = "store_uid")
  private String storeUid;

  // 是否屏蔽支付完成后推送用户抖音消息，1-屏蔽 0-非屏蔽，默认为0。
  // 特别注意： 若接入POI, 请传1。因为POI订单体系会发消息，所以不用再接收一次担保支付推送消息，
  @JSONField(name = "disable_msg")
  private String disableMsg;

  // 支付完成后推送给用户的抖音消息跳转页面，开发者需要传入在app.json中定义的链接，如果不传则跳转首页。
  @JSONField(name = "msgPage")
  private String msg_page;

  // 屏蔽指定支付方式，屏蔽多个支付方式，请使用逗号","分割，枚举值：
  // 屏蔽微信支付：LIMIT_WX
  // 屏蔽支付宝支付：LIMIT_ALI
  // 屏蔽抖音支付：LIMIT_DYZF
  // 特殊说明：若之前开通了白名单，平台会保留之前屏蔽逻辑；若传入该参数，会优先以传入的为准，白名单则无效
  @JSONField(name = "limitPayWay")
  private String limit_pay_way;

  @Override
  public String requestUri() {
    return BdConstants.API_HOST + "/api/apps/ecpay/v1/create_order";
  }
}
